package com.iflytek.ci.cpms.dto;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.iflytek.framework.web.jackson.CustomDateTimeSerializer;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 里程碑发布构建对象
 * </p>
 * 
 * @author xzyan
 * @version 1.0 2013-1-14 2:23 PM
 * @since JDK 1.5
 */
public class MilestoneReport implements Serializable {

	/** 项目名 */
	private String projectName;

	/** 项目的SVN地址 */
	private String svnAddr;

	/** 产品版本号 */
	private String version;

	/** 开始时间 */
    @JsonSerialize(using = CustomDateTimeSerializer.class)
	private Date startTime;

	/** 结束时间 */
    @JsonSerialize(using = CustomDateTimeSerializer.class)
	private Date dueTime;

    /**构建结果*/
    private Boolean buildResult;

	/** 构建的版本号 */
	private String buildNote;

	/** 构建目的 */
	private String goal;

	/** 组建列表，以分号隔开 */
	private String component;

	/** 开发/修改范围 */
	private String devRange;

	/** 新增/修改特性 */
	private String updateFeature;

	/** 已知问题列表 */
	private String issueList;

	/** 部署注意事项 */
	private String attention;

	/** 邮件地址，以分号隔开 */
	private String emails;

	/**
	 * 获取项目名称
	 * 
	 * @return 项目名
	 */
	public String getProjectName() {
		return projectName;
	}

	/**
	 * 设置项目名
	 * 
	 * @param projectName
	 *            项目名
	 */
	public void setProjectName(String projectName) {
		this.projectName = projectName;
	}

	/**
	 * 获取SVN地址
	 * 
	 * @return 项目的SVN地址
	 */
	public String getSvnAddr() {
		return svnAddr;
	}

	/**
	 * 设置项目SVN地址
	 * 
	 * @param svnAddr
	 *            svn地址
	 */
	public void setSvnAddr(String svnAddr) {
		this.svnAddr = svnAddr;
	}

	/**
	 * 获取版本号
	 * 
	 * @return 版本号
	 */
	public String getVersion() {
		if (version == null || version == "") {
			version = "1.0";// 默认版本号为1.0
		}
		return version;
	}

	/**
	 * 设置版本号
	 * 
	 * @param version
	 *            版本
	 */
	public void setVersion(String version) {
		this.version = version;
	}

	/**
	 * 获取开始时间
	 * 
	 * @return 开始时间
	 */
	public Date getStartTime() {
		return startTime;
	}

	/**
	 * 设置开始时间
	 * 
	 * @param startTime
	 *            开始时间
	 */
	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}

	/**
	 * 获取完成时间
	 * 
	 * @return 完成时间
	 */
	public Date getDueTime() {
		return dueTime;
	}

	/**
	 * 设置完成时间
	 * 
	 * @param dueTime
	 *            完成时间
	 */
	public void setDueTime(Date dueTime) {
		this.dueTime = dueTime;
	}

	/**
	 * RDM获取构建号
	 * 
	 * @return 构建号
	 */
	public String getBuildNote() {
		return buildNote;
	}

	/**
	 * 设置RDM构建号
	 * 
	 * @param buildNote
	 *            构建号
	 */
	public void setBuildNote(String buildNote) {
		this.buildNote = buildNote;
	}

	/**
	 * 获取构建目的
	 * 
	 * @return 目的
	 */
	public String getGoal() {
		return goal;
	}

	/**
	 * 设置构建目的
	 * 
	 * @param goal
	 *            目的
	 */
	public void setGoal(String goal) {
		this.goal = goal;
	}

	/**
	 * 获取组件列表，以分号隔开
	 * 
	 * @return
	 * 
	 */
	public String getComponent() {
		return component;
	}

	/**
	 * 设置组件列表，以分号隔开
	 * 
	 * @param component
	 *            组件列表
	 * 
	 */
	public void setComponent(String component) {
		this.component = component;
	}

	/**
	 * 获取开发/修改范围
	 * 
	 * @return 开发修改范围
	 */
	public String getDevRange() {
		return devRange;
	}
	/**
	 * 设置开发/修改范围
	 * 
	 * @param devRange
	 *            开发/修改范围
	 */
	public void setDevRange(String devRange) {
		this.devRange = devRange;
	}

	/**
	 * 获取新增/修改特性
	 * 
	 * @return 新增/修改特性
	 */
	public String getUpdateFeature() {
		return updateFeature;
	}

	/**
	 * 设置新增/修改特性
	 * 
	 * @param updateFeature
	 *            新增/修改特性
	 */
	public void setUpdateFeature(String updateFeature) {
		this.updateFeature = updateFeature;
	}

	/**
	 * 获取反馈列表
	 * 
	 * @return 反馈信息，以分号隔开
	 */
	public String getIssueList() {
		return issueList;
	}

	/**
	 * 反馈问题列表
	 * 
	 * @param issueList
	 *            已知问题，用分号隔开
	 */
	public void setIssueList(String issueList) {
		this.issueList = issueList;
	}

	/**
	 * 获取部署注意事项
	 * 
	 * @return 部署注意事项
	 */
	public String getAttention() {
		return attention;
	}

	/**
	 * 设置部署注意事项
	 * 
	 * @param attention
	 *            注意事项
	 */
	public void setAttention(String attention) {
		this.attention = attention;
	}

	/**
	 * 获取邮件地址
	 * 
	 * @return 涉众人员的邮件地址，需要以分号切开
	 */
	public String getEmails() {
		return emails;
	}

	/**
	 * 设置设置人员邮件地址
	 * 
	 * @param emails
	 *            邮件，用分号隔开
	 */
	public void setEmails(String emails) {
		this.emails = emails;
	}

    /**
     * 得到构建结果
     *
     * @return
     */
    public Boolean getBuildResult() {
        return buildResult;
    }

    /**
     * 设置构建结果
     *
     * @param buildResult 构建结果
     */
    public void setBuildResult(Boolean buildResult) {
        this.buildResult = buildResult;
    }
}
